المواصفة الرئيسية لمنصة MOLAK v2.0

0) فكرة المنصة

MOLAK هي منصة SaaS لتسيير العقارات وإدارة الإيجارات، بنظام متعدد المُلّاك (Multi-Owner):

كل مالك (Owner) عنده حساب خاص.

كل مالك يضيف عدّة بنايات.

كل بناية تحتوي على عدّة وحدات (شقق/محلات…).

لكل وحدة يمكن أن يكون:

عقود سارية، منتهية، أو مستقبلية.

المستأجرون لديهم بوابة مستأجر.

مقدّمو الخدمة لديهم بوابة صيانة.

المنصة تحتوي على:

إدارة العقود، الدفعات، الصيانة، السوق الإيجاري، الاشتراكات، الدفع أونلاين، التقارير، والرسائل (SMS/Email).

1) الأدوار (User Roles)

Platform Super Admin (إدارة المنصة)

إدارة المُلّاك (owners) والاشتراكات.

إعداد الرسوم والعمولات ونسب المنصة.

إدارة إعدادات SMS / Email / Payment Gateway.

رؤية التقارير العالية المستوى عن المنصة كاملة.

Owner (مالك عقارات)

يضيف بنايات ووحدات.

يبرم العقود مع المستأجرين.

يفعّل أو يوقف خدمة الدفع أونلاين للمستأجرين.

يتابع الدفعات، المتأخرات، الصيانة، نسبة الإشغال.

يضيف Admins تابعين له بصلاحيات محددة.

Admin (مساعد للمالك)

مستخدم تابع لمالك معيّن.

الصلاحيات قابلة للضبط:

View / Add / Edit / Delete لكل موديول على حدة.

يدير: الوحدات، العقود، المستأجرين، الدفعات، الصيانة… داخل نطاق المالك فقط.

Tenant (مستأجر)

لديه عقد واحد على الأقل (ساري أو منتهي).

عنده بوابة مستأجر:

رؤية العقود وجدول الدفعات.

تحميل الشروط والعقد.

رفع نسخته الموقّعة.

دفع الدفعات أونلاين إذا المالك فعّل الخدمة.

إرسال طلبات صيانة مرتبطة بوحدته.

Service Provider (مقدّم خدمة/مقاول)

شركة أو شخص مستقل.

يستقبل طلبات عروض أسعار للصيانة من ملاك مختلفين.

يرسل عروض أسعار (Quotes).

يتابع الأعمال المقبولة، حالة التنفيذ، والمدفوعات.

تُقتطع منه عمولة المنصة عند الدفع عبر النظام.

User (مستخدم عام)

أي مستخدم يقوم بالتسجيل العادي.

يمكنه تصفّح الوحدات المعروضة في السوق الإيجاري.

إرسال طلب حجز/استفسار.

يتحول إلى Tenant عندما يوقّع عقداً مع مالك.

2) الكيانات الأساسية (Entities – Conceptual)

هذه قائمة مفهومية، يمكن أن تتوزع على عدة جداول بحسب التصميم النهائي.

clients

كل المستخدمين (Owners, Admins, Tenants, Service Providers, Platform Admins) مع:

full_name, email, phone, role, status, password_hash…

owners

في حال تم فصل بيانات المالك التجارية عن clients:

owner_id, client_id, trade_name, trade_license, billing_info…

buildings

building_id, owner_id, name, name_ar, address, city, type, notes…

flats / units

flat_id, building_id, flat_number, floor, bedrooms, bathrooms, area, usage_type (سكني/تجاري), status (occupied / vacant / soon_vacant), is_for_rent, rent_price, description…

tenants

إذا أحببنا فصل بيانات المستأجر عن clients:

tenant_id, client_id, id_number, nationality, phone, email…

contracts

contract_id, owner_id, tenant_id, flat_id

start_date, end_date, annual_rent, payment_frequency, security_deposit_amount, status (active / expired / cancelled / future)

metadata: contract_number, notes, created_by…

contract_installments (schedule)

installment_id, contract_id

due_date, amount, cheque_number, status (pending / paid / overdue / cancelled).

payments

payment_id, contract_id, installment_id (nullable), payer (tenant/owner), method (cash/transfer/cheque/online)

paid_amount, payment_date, reference, gateway_fee, platform_fee, owner_net_amount…

contract_documents

document_id, contract_id, document_type, file_path, uploaded_at

document_type ∈ {
terms_unsigned,
terms_owner_signed,
terms_tenant_signed,
contract_copy
}

maintenance_requests

request_id, owner_id, (optional tenant_id), flat_id

title, description, priority, status (open / quoted / in_progress / completed / cancelled)

created_by (owner/admin/tenant), created_at, updated_at.

maintenance_quotes

quote_id, request_id, service_provider_id

amount, description, validity_date, status (pending / accepted / rejected).

maintenance_jobs

job_id, request_id, quote_id

final_amount, status (in_progress / completed / paid), completed_at.

subscriptions / owner_plans

subscription_id, owner_id

plan_type (Starter / Pro / Enterprise)،

monthly_fee, included_units, extra_unit_price,

start_date, next_billing_date, status (active / suspended / cancelled)…

marketplace_listings

listing_id, flat_id, owner_id

is_active, title, description, photos, listing_rent_amount, listing_status (available / reserved / removed).

notifications

notification_id, user_id, channel (email/sms/in-app), type, payload_json, status, sent_at.

audit_logs

log_id, user_id, action, entity_type, entity_id, before_json, after_json, created_at.

3) الموديولات الرئيسية (Modules)
3.1. لوحة إدارة المنصة (Platform Admin)

إدارة المُلّاك (Owners):

إنشاء، تفعيل، إيقاف، رؤية الباقة الحالية وعدد الوحدات.

إدارة الاشتراكات:

ضبط أسعار الباقات، عدد الوحدات المتضمنة، سعر الوحدة الإضافية.

رؤية الفواتير والمدفوعات الخاصة بالمُلّاك.

إعداد النِّسب والعمولات:

نسبة ٢.٧٪ على العقود.

نسبة ٢٠٪ على أعمال الصيانة المدفوعة أونلاين.

نسبة ٣.١٪ على دفعات المستأجرين أونلاين (عند تفعيل الخدمة).

(الرسوم الثابتة ٢٦ درهم يمكن جعلها إعداداً اختيارياً إذا تم اعتمادها).

إعدادات النظام العامة:

SMS Gateway / API Key.

Email SMTP.

Payment Gateway (Tabby أو غيره).

إعداد الشعار والألوان (ثيم MOLAK).

3.2. لوحة المالك (Owner Dashboard)

نظرة عامة (Dashboard)

إجمالي الدخل الحالي والمتوقّع.

مجموع المتأخرات.

نسبة الإشغال (occupied vs vacant).

عدد الوحدات الشاغرة وقريباً شاغرة.

إشعارات مهمة (دفعات متأخرة، عقود قربت تسالي…).

إدارة البنايات (Buildings)

إضافة/تعديل/حذف بنايات.

ربط كل بناية بوحداتها.

إدارة الوحدات (Flats/Units)

إضافة/تعديل/حذف وحدة.

خصائص:

رقم الشقة، الطابق، عدد الغرف، المساحة، نوع الاستخدام، الإيجار الأساسي المقترح…

حالة الوحدة:

مشغولة (Occupied)

شاغرة (Vacant)

قريباً شاغرة (Vacant Soon – إذا العقد ينتهي خلال أقل من 30 يوم).

التحكم في الظهور في السوق:

is_for_rent = 1 → تظهر في سوق الإيجار.

غير ذلك → تبقى داخلية ولا تظهر للعامة.

إدارة المستأجرين (Tenants)

إنشاء مستأجر جديد أو ربط مستأجر موجود بعقد.

رؤية عقود كل مستأجر والدفعات المرتبطة به.

إدارة العقود (Contracts)

إنشاء عقد جديد:

اختيار وحدة + مستأجر + قيمة الإيجار السنوي + مدة العقد + دفعات + وديعة الضمان.

تجديد عقد:

نفس الوحدة أو وحدة أخرى.

إنهاء عقد:

مع تحديد سبب (انتهاء طبيعي، فسخ، طرد…).

المستندات:

توليد الشروط terms_unsigned.

رفع نسخة المالك الموقّعة terms_owner_signed.

رؤية نسخة المستأجر المرفوعة terms_tenant_signed.

رفع أو توليد نسخة نهائية من العقد contract_copy.

إدارة الدفعات (Payments & Schedule)

توليد جدول الدفعات تلقائياً حسب تكرار الدفع (شهري، ربع سنوي…).

تسجيل الدفعات اليدوية (Cash/Transfer/Cheque).

متابعة حالة كل قسط:

مدفوع، متأخر، قادم.

في حالة تفعيل الدفع أونلاين:

رؤية الدفعات التي تمت أونلاين، مع عرض:

إجمالي المبلغ،

حصة المنصة (نسبة ٣.١٪ +/أو رسوم ثابتة إن وُجدت)،

صافي المبلغ المحوّل للمالك.

إدارة الصيانة (Maintenance)

إنشاء طلب صيانة لوحدة معيّنة (من طرف المالك/الـ Admin).

إمكانية استقبال طلبات من المستأجر كذلك (حسب الإعدادات).

إرسال الطلب إلى عدّة مقدّمي خدمة دفعة واحدة.

استلام عروض الأسعار، قبول واحد منها، وتحويله إلى Job.

متابعة حالة التنفيذ، ورفع صور بعد الإنجاز.

دفع تكلفة الصيانة عبر المنصة (Online Payment) مع تطبيق عمولة المنصة ٢٠٪.

إدارة المستخدمين التابعين (Owner Admins)

إضافة Admin جديد.

تحديد الصلاحيات لكل موديول:

View / Add / Edit / Delete.

تعطيل/تفعيل Admin.

3.3. بوابة المستأجر (Tenant Portal)

الصفحة الرئيسية:

قائمة العقود المرتبطة بالمستأجر.

حالة كل عقد (ساري / منتهي / قريب الانتهاء).

العقد:

معلومات الوحدة، فترة العقد، مبلغ الإيجار السنوي، وديعة الضمان.

تحميل:

الشروط العامة terms_owner_signed (بعد توقيع المالك).

نسخة العقد contract_copy إن توفرت.

الدفعات:

جدول الدفعات مع التواريخ والمبالغ والحالة.

إمكانية دفع الدفعات أونلاين (إذا المالك فعّل الخدمة).

المستندات:

رفع نسخة المستأجر الموقّعة terms_tenant_signed.

الصيانة:

إنشاء طلب صيانة لوحدته.

متابعة حالة الطلب (قيد المراجعة/قيد التنفيذ/منجز…).

3.4. بوابة مقدم الخدمة (Service Provider Portal)

الطلبات الجديدة:

رؤية طلبات الصيانة المفتوحة المرسلة له.

عروض الأسعار:

إرسال Quote: مبلغ، وصف، مدة تنفيذ، شروط خاصة.

الأعمال (Jobs):

رؤية الطلبات المقبولة.

تحديث حالة التنفيذ.

رفع تقرير أو صور بعد الإنتهاء.

المدفوعات:

رؤية الأعمال المدفوعة عبر النظام.

عرض:

المبلغ الكلي.

عمولة المنصة (20%).

صافي المبلغ الخاص بمقدم الخدمة.

3.5. سوق الإيجار (Rental Marketplace)

يعرض فقط الوحدات التي:

حالتها vacant أو soon_vacant و

معلّمة is_for_rent = 1 من طرف المالك.

يمكن للمستخدم العام/المستأجر:

تصفّح الوحدات (فلترة حسب المدينة، السعر، عدد الغرف…).

رؤية تفاصيل الوحدة والصور.

إرسال طلب حجز أو استفسار.

الطلب يصل إلى المالك أو الـ Admin التابع له داخل لوحة المالك.

4) قواعد العمل (Business Rules)
4.1. حالة الوحدة (Vacancy Logic)

إذا لا يوجد عقد ساري للوحدة → الحالة: شاغرة (Vacant).

إذا يوجد عقد ساري لكن تاريخ نهايته أقل من 30 يوم:

تظهر في النظام كـ “قريباً شاغرة” (Vacant Soon).

ويمكن اختيار عرضها في السوق أو لا.

عرض الوحدة في السوق الإيجاري:

فقط إذا is_for_rent = 1.

4.2. المستندات (Contract Documents)

لكل عقد:

terms_unsigned: الشروط قبل توقيع أي طرف.

terms_owner_signed: نسخة المالك الموقّعة.

terms_tenant_signed: نسخة المستأجر الموقّعة.

contract_copy: نسخة نهائية للعقد (PDF أو غيره).

4.3. سير عمل الصيانة (Maintenance Flow)

إنشاء طلب صيانة من المالك/المستأجر.

إرسال الطلب لعدة مقدمي خدمة.

مقدّمو الخدمة يرسلون Quotes.

المالك يختار Quote واحد ويتم إنشاء Job.

بعد الإنجاز:

يتم تحديث حالة Job إلى “مكتمل”.

يتم الدفع (يفضَّل عبر المنصة).

تُطبّق عمولة المنصة ٢٠٪ على المبلغ.

5) نموذج الإيرادات والتسعير (Monetization)
5.1. اشتراكات المُلّاك (Owner Subscription Plans)

مهم: هذه المبالغ شهرية الآن، حسب تصحيحك.

Starter – 399 AED / شهرياً

عدد وحدات أساسي (يُحدد حسب السياسة، مثلاً: 50 وحدة كمثال).

كل وحدة إضافية: 10 AED / شهرياً / للوحدة.

الخصائص:

إدارة البنايات والوحدات والعقود والمستأجرين.

إدارة الصيانة الأساسية.

تقارير أساسية.

إمكانية تفعيل الدفع أونلاين للمستأجرين (مع تطبيق رسوم الدفع أونلاين).

Pro – 799 AED / شهرياً

عدد وحدات أساسي أكبر (مثلاً 150 وحدة – مثال).

كل وحدة إضافية: 5 AED / شهرياً / للوحدة.

الخصائص:

كل خصائص Starter.

تقارير متقدمة (ماليات، إشغال…).

أدوات إضافية للإشعارات والتنبيهات.

دعم أفضل (Support أعلى).

Enterprise – 1499 AED / شهرياً

يشمل حتى 300 وحدة.

كل وحدة إضافية: 3 AED / شهرياً / للوحدة.

الخصائص:

كل خصائص Pro.

خيارات تخصيص أعلى.

إمكانية ربط مع أنظمة أخرى (API، Integrations).

أولوية في الدعم الفني.

كل خطة تشمل:

إدارة الاشتراكات ودفع الاشتراكات أونلاين.

إمكانية تفعيل الدفع أونلاين لدفعات المستأجرين الخاصة بوحدات المالك.

5.2. رسوم الدفع أونلاين للمستأجرين (Tenant Online Payments)

عندما يقوم المالك بتفعيل خدمة الدفع أونلاين لدفعات المستأجرين الخاصة بوحداته:

يوافق على أن تُقتطع نسبة ٣.١٪ من كل دفعة (من المبلغ المدفوع).

تقسيم المبلغ:

إجمالي المبلغ الذي دفعه المستأجر =

صافي للمالك + حصة MOLAK / بوابة الدفع (٣.١٪).

هذه النسبة تُوثّق في:

شروط استخدام المالك.

الفواتير والتقارير.

5.3. رسوم العقود – 2.7% من قيمة الإيجار السنوي

عن كل عقد جديد أو تجديد:

المنصة تتقاضى ٢.٧٪ من قيمة الإيجار السنوي.

يمكن تحصيلها:

إما كرسوم مستقلة تدفع من طرف المالك.

أو خصمها من أول دفعة أونلاين (حسب تصميم الفلو النهائي).

يجب إظهار هذه الرسوم في:

الفاتورة الخاصة بالمالك.

التقارير المالية (تقسيم حصة المالك وحصة MOLAK).

5.4. عمولة الصيانة – 20%

عن كل Job صيانة تم دفعه عبر المنصة:

المنصة تتقاضى ٢٠٪ من مبلغ الخدمة.

تقسيم:

٨٠٪ → لمقدم الخدمة.

٢٠٪ → لمولك (MOLAK).

يظهر هذا التقسيم في:

الفاتورة.

تقارير مقدم الخدمة.

تقارير المالك والمنصة.

5.5. الرسوم الثابتة 26 AED (اختيارية/قابلة للإعداد)

نموذج بديل/إضافي مأخوذ من AKSM 2.0:

يمكن تفعيل نموذج رسوم ثابتة قدرها ٢٦ AED عن كل دفعة مستأجر مدفوعة أونلاين.

إما:

اعتماد ٣.١٪ فقط،

أو ٢٦ AED فقط،

أو نموذج مركّب (مثلاً ٣.١٪ + مبلغ ثابت صغير) حسب السياسة النهائية.

يُفضَّل جعل هذا الإعداد:

متغير في إعدادات منصة MOLAK (في لوحة Platform Admin).

6) الجوانب التقنية (Tech Spec – High Level)

Back-end:

PHP 8+ (بدون Framework MVC تقيل).

بنية تعتمد على Classes + صفحات PHP مع مجلدات منظمة وواضحة.

Database:

MySQL 8 (InnoDB, utf8mb4).

الترجمة (Localization):

دالة t('key.path').

ملفات:

lang/ar.php

lang/en.php

هيكلة المفاتيح حسب الموديولات:

auth.login, profile.title_page, contracts.new_contract… إلخ.

الواجهة (Frontend):

HTML5 + CSS3 + Bootstrap 5 أو تصميم مخصص.

استعمال ألوان MOLAK (tasleeh palette):

--tasleeh-white, --tasleeh-gold, --tasleeh-bronze, --tasleeh-black, …

دعم RTL و LTR.

هيكلة الملفات (Folders Structure – Conceptual):

/config
  config.php
  database.php
  mail.php
  sms.php
  payment_gateway.php

/core/classes
  Database.php
  Session.php
  Auth.php
  User.php
  Owner.php
  Tenant.php
  ServiceProvider.php
  Building.php
  Flat.php
  Contract.php
  Payment.php
  Subscription.php
  Notification.php
  SmsGateway.php
  // ... إلخ

/lang
  ar.php
  en.php
  lang.php   // فيه function t()

/modules
  /owners
  /buildings
  /flats
  /tenants
  /contracts
  /payments
  /maintenance
  /reports
  /subscriptions
  /marketplace
  /settings

/public  (أو جذر المشروع)
  index.php
  login.php
  dashboard_owner.php
  dashboard_tenant.php
  dashboard_service_provider.php
  // الصفحات الرئيسية

/assets
  /css
  /js
  /images

7) الإصدارات (Versioning)